package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * java.util.List接口，继承自Collection
 * List集合的特点:可以存放重复元素且有序，其定义了一组通过下标操作元素的方法
 * 常用实现类:
 * java.util.ArrayList:内部由数组实现，查询性能更好。
 * java.util.LinkedList:内部由链表实现，增删性能更好，首尾增删性能最佳。
 * 在对性能没有苛刻要求时，默认都选取ArrayList即可。
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
//        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);

        /*
            E get(int index)
            获取给定下标处对应的元素
         */
        String str = list.get(2);
        System.out.println(str);

        for(int i=0;i<list.size();i++){
            str = list.get(i);
            System.out.println(str);
        }

        /*
            E set(int index,E e)
            将给定元素设置到指定位置，返回值为该位置原有元素。
            替换元素操作
         */
        //[one, two, six, four, five]
        String old = list.set(2,"six");
        System.out.println(list);
        System.out.println(old);

        //将集合翻转
        //  0    1    2     3    4
        //[five, two, six, four, one]
        for(int i=0;i<list.size()/2;i++){
            //取出正数位置元素
            String e = list.get(i);//one
            //将正数位置元素存入倒数位置上
            e = list.set(list.size()-1-i,e);//返回原倒数位置上的元素
            //将倒数位置上的元素设置到正数位置上
            list.set(i,e);
        }


//        Collections.reverse(list);

        //[five, four, six, two, one]
        System.out.println(list);


    }
}
